/*
 * CourseList.h
 *
 *  Created on: 1 May 2010
 *      Author: Savramis Sartios
 */

#ifndef COURSELIST_H_
#define COURSELIST_H_
#include <map>
using namespace std;
#include "../Decorator/ACourseRegistrationDecorator.h"

/**
 * Is the course list for a course registration
 */
class CourseList:public ACourseRegistrationDecorator{
public:
	CourseList(ICourseRegistration *registration,map<string *,string *> *courses);
	virtual ~CourseList();

	/**
	 *	Sets the owner of course registration
	 *	\param	aem	owner's aem
	 */
	virtual void		setOwner(const string *aem);

	/**
	 *	Returns the owner of course registration
	 *	\return	owner's aem
	 */
	virtual string * 	getOwner()const;

	/**
	 * Sets the courses of the of the registrations
	 * \param	courses	is a map which contains teacher's and course's codes
	 */

	virtual void setCourses(map<string *,string *> * courses);

	/**
	 * Returns the registered courses
	 * \return map with registerd courses' and teacher's codes
	 */
	virtual map<string *,string *> * getCourses()const;

	/**
	 * Returns the beginning of the map
	 * \return map<string *,string *>::iterator
	 */
	virtual map<string *,string *>::iterator getCourseListStart();

	/**
	 * Returns the end of the map
	 * \return map<string *,string *>::iterator
	 */
	virtual map<string *,string *>::iterator getCourseListEnd();

private:
	map<string *,string *> *courses_;
};

#endif /* COURSELIST_H_ */
